<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue.js - 基础</title>
</head>

<body>
    <div id="app">
        <p>单价: <input type="text" v-model="cart.price"></p>
        <p>数量: <input type="text" v-model="cart.num"></p>
        <p>运费: {{isNeedPost?'包邮':post}} </p>
        <P v-if="isMember">当前享受折扣: {{sale}}</P>
        <p>总金额:{{ total }}</p>
        <p>总金额:{{ total }}</p>
        <p>总金额:{{ total }}</p>
    </div>

    <!-- 引入vue框架 开发版 :包含警告 和调试信息 -->
    <script src="../lib/vue.js"></script>
    <script>
        // 不建议在插值表达式中编写过于复杂的表达式 = > 不利于维护,不直观

        //计算属性: 就是可以进行动态计算的属性 , 使用计算属性后 ,可以对计算的结果进行缓存,下次使用时,直接使用缓存的数据, 在计算属性中依赖的data中的数据有发生变化,会触发计算属性的重新计算.

        //注意: 在vue实例的options中 data , methods , computed 不能出现重名的变量属性!!!!

        /**
            需求:
                1.购物金额满 25 免运费  √ 
                2.88会员 ,全场购物享受8.8 ×
                
        **/

        let vm = new Vue({
            el: "#app",//指定Vue挂载的DOM
            data: {//当前vue实例中使用的数据
                cart: {
                    price: 12.5,
                    num: 1,
                },
                post: 12,
                isMember: true,//是否会员标识
                isNeedPost: false,//是否需要免运费
                sale: 0,//折扣的钱
            },
            methods: {//当前Vue实例中使用到的方法
                sale2(){

                }
            },
            computed:{ //定义计算属性 (但是其实是一个方法!!!)
                total(){ //需要一个返回值, 这个返回值就是属性值
                    let tmp = this.cart.price * this.cart.num; //首先预计算
                    let sale = 0;
                    //计算会员折扣问题
                    if (this.isMember) {
                        sale = (tmp * 0.12).toFixed(2);
                        tmp = tmp * 0.88;
                    }

                    this.sale = sale;
                    //判断是否购物满25   
                    if (tmp >= 25) {
                        this.isNeedPost = true;
                        return tmp;
                    }
                    this.isNeedPost = false;
                    console.log('正在计算商品总价...');
                    return tmp + this.post;
                }
            }
        })
    </script>
</body>

</html>